import request from '@/config/axios'
import type {Dayjs} from 'dayjs';

/** ERP 生产计划单信息 */
export interface ProducePlan {
    id: number; // 编号
    no?: string; // 生产计划单编号
    productId?: number; // 产品编号
    productName: string; // 产品名称
    productId_dictText?: string; // 产品名称(字典文本)
    productUnitId: number; // 产品单位
    orderCount?: number; // 订购数量
    produceCount?: number; // 生产数量
    salesOrderId: number; // 销售订单编号
    salesOrderNo: string; // 销售订单号
    fileUrl: string; // 附件地址
    planFinishTime: string | Dayjs; // 计划完工日期
    realFinishTime: string | Dayjs; // 实际完工日期
    remark: string; // 备注
    status?: string; // 生产状态 10-未审批 20-加工中 30-已完工

}

// ERP 生产计划单 API
export const ProducePlanApi = {
    // 查询ERP 生产计划单分页
    getProducePlanPage: async (params: any) => {
        return await request.get({url: `/erp/produce-plan/page`, params})
    },

    // 查询ERP 生产计划单详情
    getProducePlan: async (id: number) => {
        return await request.get({url: `/erp/produce-plan/get?id=` + id})
    },

    // 新增ERP 生产计划单
    createProducePlan: async (data: ProducePlan) => {
        return await request.post({url: `/erp/produce-plan/create`, data})
    },

    // 修改ERP 生产计划单
    updateProducePlan: async (data: ProducePlan) => {
        return await request.put({url: `/erp/produce-plan/update`, data})
    },

    // 删除ERP 生产计划单
    deleteProducePlan: async (id: number) => {
        return await request.delete({url: `/erp/produce-plan/delete?id=` + id})
    },

    /** 批量删除ERP 生产计划单 */
    deleteProducePlanList: async (ids: number[]) => {
        return await request.delete({url: `/erp/produce-plan/delete-list?ids=${ids.join(',')}`})
    },

    // 导出ERP 生产计划单 Excel
    exportProducePlan: async (params) => {
        return await request.download({url: `/erp/produce-plan/export-excel`, params})
    },

    // 更新生产计划单的状态
    updateSaleOrderStatus: async (ids: string, status: number) => {
        return await request.put({
            url: `/erp/produce-plan/update-status`,
            params: {
                ids,
                status
            }
        })
    },
    finishPlan: async (id: number) => {
        return await request.put({
            url: `/erp/produce-plan/finishPlan?id=` + id
        })
    },
    // 更新生产计划单的状态
    remachine: async (ids: string) => {
        return await request.put({
            url: `/erp/produce-plan/remachine`,
            params: {
                ids,
            }
        })
    },

    // 合并生产计划单
    mergeOrders: async (ids: number[]) => {
        return await request.post({
            url: `/erp/produce-plan/merge`,
            data: {
                ids
            }
        })
    },

}
